﻿//----------------------------------------------------------------
// Desc: 
// Edit: ShowLong, http://blog.csdn.net/showlong
//
// Date Created: 2012-04-13
//
// Update Date : 
//
// Copyright (c) Fuel Game Engine (http://www.fge-engine.com), All rights reserved.
//
//----------------------------------------------------------------
#pragma once


//----------------------------------------------------------------
// 非指针类型基础符号容器定义
//----------------------------------------------------------------
typedef_vector(void, _void);                     // 自定义vector容器类型名 fv_void
typedef_vector(bool, _bool);                     // 自定义vector容器类型名 fv_bool
typedef_vector(char, _char);                     // 自定义vector容器类型名 fv_char
typedef_vector(wchar_t, _wchar_t);               // 自定义vector容器类型名 fv_wchar_t
typedef_vector(ACHAR, _achar);                   // 自定义vector容器类型名 fv_achar
typedef_vector(WCHAR, _wchar);                   // 自定义vector容器类型名 fv_wchar
typedef_vector(TCHAR, _tchar);                   // 自定义vector容器类型名 fv_tchar
typedef_vector(NCHAR, _nchar);                   // 自定义vector容器类型名 fv_nchar
typedef_vector(short, _short);                   // 自定义vector容器类型名 fv_short
typedef_vector(int, _int);                       // 自定义vector容器类型名 fv_int
typedef_vector(long, _long);                     // 自定义vector容器类型名 fv_long
typedef_vector(float, _float);                   // 自定义vector容器类型名 fv_float
typedef_vector(double, _double);                 // 自定义vector容器类型名 fv_double
typedef_vector(INT64, _int64);                   // 自定义vector容器类型名 fv_int64
typedef_vector(unsigned char, _uchar);           // 自定义vector容器类型名 fv_uchar
typedef_vector(unsigned short, _ushort);         // 自定义vector容器类型名 fv_ushort
typedef_vector(unsigned int, _uint);             // 自定义vector容器类型名 fv_uint
typedef_vector(unsigned long, _ulong);           // 自定义vector容器类型名 fv_ulong
typedef_vector(UINT64, _uint64);                 // 自定义vector容器类型名 fv_uint64
typedef_vector(BYTE, _byte);                     // 自定义vector容器类型名 fv_byte
typedef_vector(WORD, _word);                     // 自定义vector容器类型名 fv_word
typedef_vector(DWORD, _dword);                   // 自定义vector容器类型名 fv_dword
typedef_vector(BOOL, _lbool);                    // 自定义vector容器类型名 fv_lbool
typedef_vector(size_t, _size_t);                 // 自定义vector容器类型名 fv_size_t
typedef_vector(POINT, _wpoint);                  // 自定义vector容器类型名 fv_wpoint
typedef_vector(RECT, _wrect);                    // 自定义vector容器类型名 fv_wrect
typedef_vector(FIDHASH, _hash);                  // 自定义vector容器类型名 fv_hash

typedef_vector(FFLOAT16, _float16);              // 自定义vector容器类型名 fv_float16
typedef_vector(FVECTOR2, _vector2);              // 自定义vector容器类型名 fv_vector2
typedef_vector(FVECTOR3, _vector3);              // 自定义vector容器类型名 fv_vector3
typedef_vector(FVECTOR4, _vector4);              // 自定义vector容器类型名 fv_vector4
typedef_vector(FMATRIX, _matrix);                // 自定义vector容器类型名 fv_matrix
typedef_vector(FQUATERNION, _quaternion);        // 自定义vector容器类型名 fv_quaternion
typedef_vector(FAABB, _aabb);                    // 自定义vector容器类型名 fv_aabb
typedef_vector(FFRUSTUM, _frustum);              // 自定义vector容器类型名 fv_frustum
typedef_vector(FPLANE, _plane);                  // 自定义vector容器类型名 fv_plane
typedef_vector(FCOLOR, _color);                  // 自定义vector容器类型名 fv_color
typedef_vector(FHITRESULT, _hit_result);         // 自定义vector容器类型名 fv_hit_result

typedef_vector(FVERTEX2D, _vtx_2d);
typedef_vector(FVERTEX2D_LINE, _vtx_line2d);
typedef_vector(FVERTEX3D_SPRITE, _vtx_3d_spr);
typedef_vector(FVERTEX3D_LINE, _vtx_line3d);
typedef_vector(FVERTEX3D_RIBBON, _vtx_ribbon3d);
typedef_vector(FVERTEX3D_POSITION, _vtx_position3d);
typedef_vector(FVERTEX3D_NORMAL, _vtx_normal3d);
typedef_vector(FVERTEX3D_COLOR, _vtx_color3d);
typedef_vector(FVERTEX3D_UV, _vtx_uv3d);
typedef_vector(FVERTEX3D_TANGENT, _vtx_tangent3d);
typedef_vector(FVERTEX3D_BLENDIDX, _vtx_blendidx3d);
typedef_vector(FVERTEX3D_BLENDWEIGHT2, _vtx_blendweight23d);
typedef_vector(FVERTEX3D_BLENDWEIGHT4, _vtx_blendweight43d);
typedef_vector(FFACE3D, _face_3d);
typedef_vector(FVERTEXELEMENT, _vertex_element);


//----------------------------------------------------------------
// 指针类型基础符号容器定义
//----------------------------------------------------------------
typedef_vector(void*, _pvoid);                   // 自定义vector容器类型名 fv_pvoid
typedef_vector(bool*, _pbool);                   // 自定义vector容器类型名 fv_pbool
typedef_vector(char*, _pchar);                   // 自定义vector容器类型名 fv_pchar
typedef_vector(wchar_t*, _pwchar_t);             // 自定义vector容器类型名 fv_pwchar_t
typedef_vector(ACHAR*, _pachar);                 // 自定义vector容器类型名 fv_pachar
typedef_vector(WCHAR*, _pwchar);                 // 自定义vector容器类型名 fv_pwchar
typedef_vector(TCHAR*, _ptchar);                 // 自定义vector容器类型名 fv_ptchar
typedef_vector(NCHAR*, _pnchar);                 // 自定义vector容器类型名 fv_pnchar
typedef_vector(short*, _pshort);                 // 自定义vector容器类型名 fv_pshort
typedef_vector(int*, _pint);                     // 自定义vector容器类型名 fv_pint
typedef_vector(long*, _plong);                   // 自定义vector容器类型名 fv_plong
typedef_vector(float*, _pfloat);                 // 自定义vector容器类型名 fv_pfloat
typedef_vector(double*, _pdouble);               // 自定义vector容器类型名 fv_pdouble
typedef_vector(INT64*, _pint64);                 // 自定义vector容器类型名 fv_pint64
typedef_vector(unsigned char*, _puchar);         // 自定义vector容器类型名 fv_puchar
typedef_vector(unsigned short*, _pushort);       // 自定义vector容器类型名 fv_pushort
typedef_vector(unsigned int*, _puint);           // 自定义vector容器类型名 fv_puint
typedef_vector(unsigned long*, _pulong);         // 自定义vector容器类型名 fv_pulong
typedef_vector(UINT64*, _puint64);               // 自定义vector容器类型名 fv_puint64
typedef_vector(BYTE*, _pbyte);                   // 自定义vector容器类型名 fv_pbyte
typedef_vector(WORD*, _pword);                   // 自定义vector容器类型名 fv_pword
typedef_vector(DWORD*, _pdword);                 // 自定义vector容器类型名 fv_pdword
typedef_vector(BOOL*, _plbool);                  // 自定义vector容器类型名 fv_plbool
typedef_vector(size_t*, _psize_t);               // 自定义vector容器类型名 fv_psize_t
typedef_vector(POINT*, _pwpoint);                // 自定义vector容器类型名 fv_pwpoint
typedef_vector(RECT*, _pwrect);                  // 自定义vector容器类型名 fv_pwrect

typedef_vector(FFLOAT16*, _pfloat16);            // 自定义vector容器类型名 fv_pfloat16
typedef_vector(FVECTOR2*, _pvector2);            // 自定义vector容器类型名 fv_pvector2
typedef_vector(FVECTOR3*, _pvector3);            // 自定义vector容器类型名 fv_pvector3
typedef_vector(FVECTOR4*, _pvector4);            // 自定义vector容器类型名 fv_pvector4
typedef_vector(FMATRIX*, _pmatrix);              // 自定义vector容器类型名 fv_pmatrix
typedef_vector(FQUATERNION*, _pquaternion);      // 自定义vector容器类型名 fv_pquaternion
typedef_vector(FAABB*, _paabb);                  // 自定义vector容器类型名 fv_paabb
typedef_vector(FFRUSTUM*, _pfrustum);            // 自定义vector容器类型名 fv_pfrustum    
typedef_vector(FPLANE*, _pplane);                // 自定义vector容器类型名 fv_pplane
typedef_vector(FCOLOR*, _pcolor);                // 自定义vector容器类型名 fv_pcolor
